When virtual machines (VMs) are deployed in a virtual computing environment, each virtual machine needs a certain amount of resources (memory, input/output operations per second (IOPS), disk space, etc.) to perform its tasks. These resources are provisioned from a pool of available physical hardware resources. Until a VM is fully created, it does not use these physical resources. Instead, a VM provisioning process occurs and resources are reserved. At a later time the VM actually consumes the resources. Thus, there is a time delay between the resource reservation and the consumption of those resources.
In highly parallel applications, a large number of VMs and/or virtual applications may be concurrently created. Problems can occur when a VM requests resources and those resources are not available when the VM needs to use those resources because the resources have been overprovisioned.
One technique for provisioning resources is to perform multiple quota checks throughout the creation and deployment process of the VMs. Availability of resources can be checked multiple times during the deployment process. However, multiple checks increases overhead and in times of highly parallel deployment there are instances where available computing resources is not being accurately depicted. There exists a window of time where a VM requests resources but is not consuming those resources yet, and those resources should not be available to other applications.